話題のAmazon CorrettoのDockerfileに手を入れてDockerイメージのダイエットしてみる
こんにちは。齋藤です。
鉄は熱いうちに打て、ってことで 今日は今激アツのAmazon Correttoの話題をお届けします。 Amazon Correttoの概要についてはこちらの速報記事を御覧ください。 僕はそんなことより、James Goslingがツイッターにいたことに驚きました。
この記事では Amazon CorrettoのDockerイメージをビルドしていきます。 使うDockerfileはこれをベースにします。 また、元のDockerfileに入れてイメージサイズの削減もしてみます。
まず普通にビルドしてみる
$ git clone git@github.com:corretto/corretto-8-docker.git $ cd corretto-8-docker $ docker image build .
イメージサイズは674MBになりました。
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 887fbbc93585 16 minutes ago 674MB
yumのキャッシュを削除する
yumのキャッシュなどを削除してイメージサイズの削減をしましょう。
2行追加しました。
FROM amazonlinux:2 RUN yes | yum update \ && yes | yum install wget \ && wget https://d3pxv6yz143wms.cloudfront.net/java-1.8.0-amazon-corretto-1.8.0_192.b12-1.amzn2.x86_64.rpm \ && wget https://d3pxv6yz143wms.cloudfront.net/java-1.8.0-amazon-corretto-devel-1.8.0_192.b12-1.amzn2.x86_64.rpm \ && yes | yum remove wget \ && rpm -K java-1.8.0-amazon-corretto-1.8.0_192.b12-1.amzn2.x86_64.rpm \ && rpm -K java-1.8.0-amazon-corretto-devel-1.8.0_192.b12-1.amzn2.x86_64.rpm \ && yes | yum localinstall *.rpm \ + && rm -rf /var/cache/yum/* \ + && yum clean all CMD ["/bin/bash"]
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 0d1688c15281 8 minutes ago 573MB
100MBぐらい減りましたかね。
もっと減らそうイメージサイズ
もっと減らすために、wgetで取ってきたrpmファイルを削除します。
1行追加しました。
FROM amazonlinux:2 RUN yes | yum update \ && yes | yum install wget \ && wget https://d3pxv6yz143wms.cloudfront.net/java-1.8.0-amazon-corretto-1.8.0_192.b12-1.amzn2.x86_64.rpm \ && wget https://d3pxv6yz143wms.cloudfront.net/java-1.8.0-amazon-corretto-devel-1.8.0_192.b12-1.amzn2.x86_64.rpm \ && yes | yum remove wget \ && rpm -K java-1.8.0-amazon-corretto-1.8.0_192.b12-1.amzn2.x86_64.rpm \ && rpm -K java-1.8.0-amazon-corretto-devel-1.8.0_192.b12-1.amzn2.x86_64.rpm \ && yes | yum localinstall *.rpm \ + && rm *.rpm \ && rm -rf /var/cache/yum/* \ && yum clean all CMD ["/bin/bash"]
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 108e34740f86 About a minute ago 496MB
更に77MBぐらい減りました。
まとめて見てみます。
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 108e34740f86 About a minute ago 496MB <none> <none> 0d1688c15281 8 minutes ago 573MB <none> <none> 887fbbc93585 16 minutes ago 674MB
元のリポジトリにあったDockerfileから合計で178MB減ったようです。
まとめ
Amazon CorrettoのDockerファイルが公開されているリポジトリの物から Dockerイメージのサイズの削減をしてみました。
yumのキャッシュでこんなに変わるものなんですね。 実際に見たのは初めてで、びっくりしました。
自分達のDockerfileを見直して Dockerイメージのサイズを減らしていきたいですね。
以上です。
おまけ。
最終的なイメージのhistoryはこんな感じ。
$ docker history 108e34740f86 IMAGE CREATED CREATED BY SIZE COMMENT 108e34740f86 36 minutes ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B 9aedecabff3e 36 minutes ago /bin/sh -c yes | yum update && yes | yum in… 334MB d656eea421ba 3 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B <missing> 3 weeks ago /bin/sh -c #(nop) ADD file:3b2c4ec84fed31ca9… 162MB
Amazon Correttoの追加によって、334MB増えています。